//package com.study.javaOther.net_security;
//import java.io.IOException;
//import java.net.NetworkInterface;
//
//import jpcap.*;
//import jpcap.packet.IPPacket;
//import jpcap.packet.Packet;
///**
// * @ClassName: IpPacket
// * @Description:
// * @author: WS
// * @date 2020/12/14
// * @Version: 1.0
// **/
//public class IpPacket {
//
//    public static void main(String[] args) {
//        NetworkInterface[] devices = JpcapCaptor.getDeviceList();
//        IpPacket ipPacket=new IpPacket();
//        for (NetworkInterface n : devices) {
//            ipPacket.IpPacket(n,5000);
//        }
//    }
//
//    /**
//     *
//     * @param device 监听设备
//     * @param wait_time 等待毫秒数
//     */
//    public void IpPacket(NetworkInterface device,long wait_time){
//
//        JpcapCaptor jpcap = null;
//        int caplen = 1512;
//        boolean promiscCheck = true;
//        System.out.println(">>>设备名称:"+device.name + ">>>设备描述:" + device.description+">>>");
//        System.out.println("------------------抓包开始-------------------------");
//        try {
//            jpcap = JpcapCaptor.openDevice(device, caplen, promiscCheck, 50);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//        int i = 0;
//        long start = System.currentTimeMillis();
//        while (i < 10) {
//            Packet packet = jpcap.getPacket();
//            if (packet instanceof IPPacket && ((IPPacket) packet).version == 4) {
//                i++;
//                IPPacket ip = (IPPacket) packet;// 强转
//
//                System.out.println("版本：IPv4");
//                System.out.println("优先权：" + ip.priority);
//                System.out.println("区分服务：最大的吞吐量： " + ip.t_flag);
//                System.out.println("区分服务：最高的可靠性：" + ip.r_flag);
//                System.out.println("长度：" + ip.length);
//                System.out.println("标识：" + ip.ident);
//                System.out.println("DF:Don't Fragment: " + ip.dont_frag);
//                System.out.println("NF:Nore Fragment: " + ip.more_frag);
//                System.out.println("片偏移：" + ip.offset);
//                System.out.println("生存时间：" + ip.hop_limit);
//
//                String protocol = "";
//                switch (new Integer(ip.protocol)) {
//                    case 1:
//                        protocol = "ICMP";
//                        break;
//                    case 2:
//                        protocol = "IGMP";
//                        break;
//                    case 6:
//                        protocol = "TCP";
//                        break;
//                    case 8:
//                        protocol = "EGP";
//                        break;
//                    case 9:
//                        protocol = "IGP";
//                        break;
//                    case 17:
//                        protocol = "UDP";
//                        break;
//                    case 41:
//                        protocol = "IPv6";
//                        break;
//                    case 89:
//                        protocol = "OSPF";
//                        break;
//                    default:
//                        break;
//                }
//                System.out.println("协议：" + protocol);
//                System.out.println("源IP " + ip.src_ip.getHostAddress());
//                System.out.println("目的IP " + ip.dst_ip.getHostAddress());
//                System.out.println("源主机名： " + ip.src_ip);
//                System.out.println("目的主机名： " + ip.dst_ip);
//            }
//            if(System.currentTimeMillis()-start>=wait_time){
//                break;
//            }
//        }
//        System.out.println("------------------抓包结束-------------------------");
//    }
//
//}
